%load_ext autoreload
%autoreload 2
import os
import pickle
from tqdm import tqdm
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler as mms
import matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import seaborn as sns
from modules.utils.general_utils.utilities import group_wise_binning
from modules.utils.general_utils.visualizers import visualize_full_panel, visualize_temporal_panel
def sns_styleset():
sns.set(context='paper', style='ticks', font='DejaVu Sans')
matplotlib.rcParams['figure.dpi'] = 100
matplotlib.rcParams['axes.linewidth'] = 1
matplotlib.rcParams['xtick.major.width'] = 1
matplotlib.rcParams['ytick.major.width'] = 1
matplotlib.rcParams['xtick.major.size'] = 3
matplotlib.rcParams['ytick.major.size'] = 3
matplotlib.rcParams['xtick.minor.size'] = 2
matplotlib.rcParams['ytick.minor.size'] = 2
matplotlib.rcParams['font.size'] = 13
matplotlib.rcParams['axes.titlesize'] = 13
matplotlib.rcParams['axes.labelsize'] = 13
matplotlib.rcParams['legend.fontsize'] = 13
matplotlib.rcParams['xtick.labelsize'] = 13
matplotlib.rcParams['ytick.labelsize'] = 13
sns_styleset()
cmap = matplotlib.cm.get_cmap('Paired')
INPUTS_PATH = 'data\\train\\inputs\\{}'
TARGETS_PATH = 'data\\train\\targets\\{}'
CMAP = matplotlib.cm.get_cmap('Paired')
BTCH = [i for i in range(len(os.listdir(INPUTS_PATH.format('continuous_features'))))]
BTCH = BTCH[0::20]
SNAPSHOTS = 10
INPUTS = ['continuous_features', 'context']
TARGETS = [
'tar_sessions',
'tar_delta_sessions',
'tar_active_time',
'tar_session_time',
'tar_activity'
]
MODELS_RMP = {
'RNN': 'RNN'
}
TARGETS_RMP = {
'tar_delta_sessions': 'Future Absence',
'tar_active_time': 'Future Active Time',
'tar_session_time': 'Future Session Time',
'tar_activity': 'Future Session Activity',
'tar_sessions': 'Future N° Sessions'
}
with open('results\\saved_objects\\mappers\\context.pkl', 'rb') as pickle_file:
CONTEXT_RMP = pickle.load(pickle_file)
CONTEXT_RMP = {value: key for key, value in CONTEXT_RMP.items()}
with (open('results\\saved_data_containers\\melchior.pkl', 'rb')) as container:
data_container = pickle.load(container)
predictions = data_container['prediction_ds']
contexts = data_container['context']
for snapshot in range(10):
UMAP = np.load(f'results\\saved_dim_reduction\\2D\\umap_melchior_eng_emb_{snapshot}.npy')
UMAP = UMAP[~np.isnan(UMAP).any(axis=1)]
colors_dict = {target_name: None for target_name in TARGETS}
for color_name, array in colors_dict.items():
binned_array = group_wise_binning(
array=predictions[color_name][snapshot],
grouper=contexts[snapshot],
n_bins=100,
method='discret'
)
colors_dict[color_name] = binned_array
visualize_full_panel(
reduction=UMAP,
contexts=contexts[snapshot],
context_remap=CONTEXT_RMP,
colors_dict=colors_dict,
colors_remap=TARGETS_RMP,
colors_name=TARGETS,
cmapper=CMAP,
snapshot=snapshot+1,
save_name=f'umap_snapshot_{snapshot}',
s=0.1
)
for target in TARGETS:
visualize_temporal_panel(
temporal_color=predictions[target],
temporal_contexts=contexts,
color_name=TARGETS_RMP[target],
binning_method='discret',
context_remap=CONTEXT_RMP,
cmapper=CMAP,
s=0.05
)